<?php 		
class App{
	public static function run(){
		// 1.初始化框架
		self::init();
		// 2.设置外部路径
		self::setUrl();
		// 3.自动载入
		spl_autoload_register(array(__CLASS__,'autoload'));
		// 4.创建demo
		self::createDome();
		// 5.实例化控制器
		self::appRun();
	}
	

private static function setUrl(){
	// 应用目录
	define('__APP__','http://'. $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']);
	// 根目录
	// var_dump(__APP__);die;
	define('__ROOT__', dirname(__APP__));
	// view目录
	define('__VIEW__',__ROOT__.'/'.APP_NAME.'/View' );
	// upload目录
	define('__UPLOAD__',__ROOT__.'/'.APP_NAME.'/Upload' );
	// public 目录
	define('__PUBLIC__',__VIEW__.'/Public' );
	// Image目录
	define('__IMAGE__',__VIEW__.'/Image' );
	// data目录
	// define('__DATA_',__VIEW__.'/Data' );

}

// 自动载入
private static function autoload($className){
	if (strlen($className)>10&&substr($className, -10)=='Controller') {
		$path=APP_CONTROLLER_PATH. '/' . $className .'.class.php';
		// echo $path;
		if (is_file($path)) {
			// echo $path;
			require_once $path;
		}else{
			halt($path.'控制器找不到');
		}
	}else{
		$path=TOOL_PATH.'/'.$className.'.class.php';
		if (is_file($path)) {
			// echo $path;
			require_once $path;
		}else{
			halt($path.'工具类找不到');
		}
	}
	
	
}
// 实例化控制器
private static function appRun(){
	$controller=isset($_GET['c'])?ucfirst($_GET['c']):'Index';
	define('CONTROLLER', $controller);
	$controller =$controller.'Controller';
	$action=isset($_GET['a'])?$_GET['a']:'index';
	define('ACTION', $action);
	$obj= new $controller();
	$obj->$action();
}
private static function createDome(){
	$data=<<<str
<?php 
class IndexController extends Controller{
	public function index(){
		header('Content-type:text/html;charset=utf-8');
		echo "<h2 style='padding:10px;font-size:40px;border:1px solid #ddd;margin:20px auto;'>欢迎使用c48大框架</h2>";
	}
}
	
?>
str;
	$file=APP_CONTROLLER_PATH.'/IndexController.class.php';
	is_file($file)|| file_put_contents($file, $data);
} 
// 初始化框架
private static function init(){
	// 框架配置路径
	$sysConfigPath=CONFIG_PATH.'/Config.php';
	// 用户配置路径
	$userConfigPath=APP_CONFIG_PATH.'/Config.php';
	if (!is_file($userConfigPath)) {
		$str=<<<str
<?php 
	return array(
		//配置项=>配置值	
	);
?>
str;
	file_put_contents($userConfigPath, $str);
	}
	// 加载配置项
	C(include $sysConfigPath);
	C(include $userConfigPath);
	date_default_timezone_set(C('DATA_TIMEZONE'));
	session_id()||session_start();
}


}

 ?>